﻿using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

namespace WindowsGame1
{
    class Jogo6
    {
        Persona[] Inimigos;
        Persona Voce;
        const int espacamento = 70;
        public Jogo6(Texture2D a, Texture2D j)
        {
            Inimigos = new Persona[10];
            Random _r = new Random();
            for (int b = 0; b < 10;b++ )
            {
                Inimigos[b] = new Persona(_r.Next(824)+100, 0 - (b * espacamento), a);
            }
            Voce = new Persona(500, 500, j);
        }

        public void Reseta()
        {
            Random _r = new Random();
            int a = 0;
            foreach(Persona b in Inimigos)
            {
                b.Pos.X = _r.Next(824)+100;
                b.Pos.Y = 0 - (a * espacamento);
                b.Vivo = true;
                a++;
            }
            Voce.Pos = new Vector2(400, 600);
        }

        public char Update(MouseState ms, Tempo Time, Song[] Musicas)
        {
            if (Time.tempoRestante <= TimeSpan.FromSeconds(0))
            {
                MediaPlayer.Play(Musicas[3]);
                Time.ResetaTempo();
                return 'k';
            }
            Voce.Pos = new Vector2(ms.X, ms.Y);
            if (ms.X <= 0)
            {
                Voce.Pos.X = 100;
            }
            if (ms.X >= 924)
            {
                Voce.Pos.X = 924;
            }
            if (ms.Y <= 0)
            {
                Voce.Pos.Y = 100;
            }
            if (ms.Y >= 768)
            {
                Voce.Pos.Y = 768;
            }
            foreach (Persona b in Inimigos)
            {
                b.Pos.Y += 5;
                if (b.Pos.Y > 768)
                {
                    if (b.Vivo == true)
                    {
                        MediaPlayer.Play(Musicas[2]);
                        Time.tempoRestante = TimeSpan.FromSeconds(5);
                        return '0';
                    }
                    else
                    {
                        Random _r = new Random();
                        b.Pos.X = _r.Next(824) + 100;
                        b.Pos.Y = 0;
                        b.Vivo = true;
                    }
                }
            }
            Colide(Time);
            if(Time.tempoRestante <= TimeSpan.FromSeconds(0))
            {
                MediaPlayer.Play(Musicas[3]);
                Time.tempoRestante = TimeSpan.FromSeconds(6);
                return 'k';
            }
            return '6';
        }

        public void Draw(SpriteBatch spriteBatch)
        {
            spriteBatch.Draw(Voce.Img, Voce.Pos, Color.White);
            foreach (Persona a in Inimigos)
            {
                if (a.Vivo == true)
                {
                    spriteBatch.Draw(a.Img, a.Pos, Color.White);
                }
            }
        }

        public bool Verifica()
        {
            foreach (Persona a in Inimigos)
            {
                if (a.Vivo == true)
                {
                    return false;
                }
            }
            return true;
        }
        public void Colide(Tempo Time)
        {
            Rectangle r1 = new Rectangle((int)Voce.Pos.X, (int)Voce.Pos.Y, (int)Voce.Img.Width, (int)Voce.Img.Height);
            foreach (Persona a in Inimigos)
            {
                Rectangle r2 = new Rectangle((int)a.Pos.X, (int)a.Pos.Y, (int)a.Img.Width, (int)a.Img.Height);
                if (r1.Intersects(r2))
                {
                    a.Vivo = false;
                    Time.Ptos += 25;
                }
            }
        }
    }
}
